The present invention relates to the field of methods for protecting data used in a data processing system, such as a computer.
In computer programming, an opaque pointer is a special case of an opaque data type which is a data type that is declared to be a pointer to a record or data structure of some unspecified type. Opaque pointers are often used in computer programs to hide implementation details. For example, a client software process which is communicating with a library might establish a session by calling an API (application programming interfaces) that will send back an opaque pointer to the client process. The opaque pointer can be used in subsequent calls to identify the client from the standpoint of the library and can be used to refer to or point to the data structure which can be manipulated by the library. Opaque pointers provide a way to hide the implementation details of an interface from a client process so that the implementation can be changed without the need to recompile the modules using the implementation.
APIs using opaque pointers are often targeted by attackers that might attempt to reverse engineer the opaque data structure. Once the opaque data structure is understood, attackers can intercept the data, modify it or even replay data previously observed. Hence, an improved method for using opaque pointers may be desirable.